<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

namespace App\Controllers;

use SON\Controller\Action;
use SON\UTIL\Converter;

/**

 *
 * @author gilmario
 */
class Conta extends Action {

    public function index() {
        if (!isset($this->view->menssagem)) {
            $this->view->menssagem = "";
        }
        if (isset($_POST['id'])) {
            $id = $_POST['id'];
            $dao = \SON\DI\Container::getClass("conta");
            $this->view->conta = $dao->carregar('id', $id);
        }

        $dao = \SON\DI\Container::getClass("Beneficiario");
        $this->view->lista = $dao->getAll();
        $this->render("index");
    }

    public function adiciona() {
        $numero_doc = "";
        $descricao = "";
        $beneficiario = "";
        $valor = "";
        $vencimento = "";
        $this->view->conta = array();
        if (isset($_POST['numero_documento'])) {
            $numero_doc = $_POST['numero_documento'];
            if ($numero_doc == '') {
                $this->view->menssagem = "<div class=\"alert alert-warning\"> <button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button> Digite o numero do documento" . "</div>";
                $this->index();
                return;
            } else {
                $this->view->conta['numero_documento'] = $numero_doc;
            }
        }
        if (isset($_POST['descricao'])) {
            $descricao = $_POST['descricao'];
            if ($descricao == "") {
                $this->view->menssagem = "<div class=\"alert alert-warning\"> <button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button> Informe uma descrição" . "</div>";
                $this->index();
                return;
            } else {
                $this->view->conta['descricao'] = $descricao;
            }
        }
        if (isset($_POST['beneficiario'])) {
            $beneficiario = $_POST['beneficiario'];
            if ($beneficiario == 0) {
                $this->view->menssagem = "<div class=\"alert alert-warning\"> <button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button>Selecione um beneficiário" . "</div>";
                $this->index();
                return;
            } else {
                $this->view->conta['beneficiario'] = $beneficiario;
            }
        }
        if (isset($_POST['valor'])) {
            $valor = Converter::stringParaDouble($_POST['valor']);
            if ($valor == 0) {
                $this->view->menssagem = "<div class=\"alert alert-warning\"> <button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button>O valor não pode ser zero" . "</div>";
                $this->index();
                return;
            } else {
                $this->view->conta['valor'] = $valor;
            }
        }

        if (isset($_POST['vencimento'])) {
            $vencimento = Converter::stringParaData($_POST['vencimento']);
            $this->view->conta['vencimento'] = $vencimento;
            if ($_POST['vencimento'] == "") {
                $this->view->menssagem = "<div class=\"alert alert-warning\"> <button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button>Digite um vencimento" . "</div>";
                $this->index();
                return;
            } else {
                $this->view->conta['vencimento'] = $_POST['vencimento'];
            }
        }

        $dao = \SON\DI\Container::getClass("conta");
        if (isset($_POST['id'])) {
            $dao->atualiza($numero_doc, $descricao, $beneficiario, $valor, $vencimento, $_POST['id']);
            $this->view->menssagem = "<div class=\"alert alert-success\"> <button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button>  Conta atualizada</div>";
        } else {
            $dao->adiciona($numero_doc, $descricao, $beneficiario, $valor, $vencimento, 'Aberto');
            $this->view->menssagem = "<div class=\"alert alert-success\"> <button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button>  Conta cadastrada</div>";
        }
        unset($this->view->conta);
        $this->index();
    }

    public function consulta() {
        $beneficiario = "";
        if (isset($_POST['pesq'])) {
            $beneficiario = $_POST['pesq'];
        }
        $dao = \SON\DI\Container::getClass("conta");
        $this->view->lista = $dao->consultaBeneficiario($beneficiario);

        if (!isset($this->view->menssagem)) {
            $this->view->menssagem = "";
        }
        $this->render("lista");
    }

    public function baixa() {
        $this->view->exibir = false;
        if (isset($_POST['id'])) {
            $this->view->exibir = true;

            $id = $_POST['id'];
            $parcela = \SON\DI\Container::getClass("parcela");

            $dao = \SON\DI\Container::getClass("conta");
            if (!isset($this->view->menssagem)) {
                $this->view->menssagem = "";
            }
            $this->view->conta = $dao->carregar('id', $id);
            $this->view->valor_pago = $parcela->valorPago($id);
            if (isset($_POST['valor'])) {

                $valor = Converter::stringParaDouble($_POST['valor']);
                $valorTotal = $valor + $this->view->valor_pago;
                if ($valorTotal > $this->view->conta['valor']) {
                    $this->view->menssagem = "<div class=\"alert alert-success\"> <button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button>O valor pago não pode ser maior que o valor devido</div>";
                    $this->view->parcelas = $parcela->consultar("conta", $id);
                    $this->render("baixa");
                } else {
                    if ($dao->baixa($id, $valor)) {
                        $this->view->menssagem = "<div class=\"alert alert-success\"> <button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button>Conta Paga</div>";
                        $this->view->valor_pago = $parcela->valorPago($id);
                        $this->view->parcelas = $parcela->consultar("conta", $id);
                        $this->visualiza();
                    } else {
                        $this->view->menssagem = "<div class=\"alert alert-success\"> <button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button>Parcela paga</div>";
                        $this->view->valor_pago = $parcela->valorPago($id);
                        $this->view->parcelas = $parcela->consultar("conta", $id);
                        $this->render("baixa");
                    }
                }
            } else {
                $this->view->parcelas = $parcela->consultar("conta", $id);
                $this->render("baixa");
            }
        } else {
            $this->view->menssagem = "<div class=\"alert alert-warning\"> <button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button>Nenhuma conta selecionada</div>";
            $this->view->parcelas = $parcela->consultar("conta", $id);
            $this->render("baixa");
        }
    }

    public function visualiza() {
        $this->view->exibir = false;
        if (isset($_POST['id'])) {
            $this->view->exibir = true;
            $id = $_POST['id'];
            $dao = \SON\DI\Container::getClass("conta");
            $this->view->conta = $dao->carregar('id', $id);
            $parcela = \SON\DI\Container::getClass("parcela");

            $this->view->parcelas = $parcela->consultar("conta", $id);
            $this->view->valor_pago = $parcela->valorPago($id);
            $this->render("visualiza");
        }
    }

    public function excluirparcela() {
        if (isset($_POST['id_parcela']) && isset($_POST['id'])) {
            $id_parcela = $_POST['id_parcela'];
            $id = $_POST['id'];
            $parcela = \SON\DI\Container::getClass("parcela");
            $parcela->exclui($id, $id_parcela);
            $this->view->mensagem = "Parcela excluída";
        }
        $this->visualiza();
    }

    public function excluirparcela2() {
        if (isset($_POST['id_parcela']) && isset($_POST['id'])) {
            $id_parcela = $_POST['id_parcela'];
            $id = $_POST['id'];
            $parcela = \SON\DI\Container::getClass("parcela");
            $parcela->exclui($id, $id_parcela);
            $this->view->menssagem = "<div class=\"alert alert-success\"> <button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button>Parcela excluída</div>";
        }
        $this->baixa();
    }

    public function excluir() {
        if (isset($_POST['id'])) {
            $id = $_POST['id'];
            $parcelaDao = \SON\DI\Container::getClass("parcela");
            $parcelaDao->excluiTodas($id);
            $contaDao = \SON\DI\Container::getClass("conta");
            $contaDao->excluir($id);
            $this->view->menssagem = "<div class=\"alert alert-success\"> <button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button>Conta excluída</div>";
        }
        $this->consulta();
    }

}
